今天是紀錄LeetCode解題的第三十六天
第三十六題題目:Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
Note:
判斷9x9數獨是否有效,只有已填充的格子需要根據以下規則進行驗證:
注意:
遍歷行,將數字儲存至串列中,判斷串列和集合(把串列轉成集合)個數是否相同,如果不同,代表該行有重複元素,直接回傳False,表示該數獨無效,列、九宮格同理
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
for i in range(9):
row_nums = []
col_nums = []
for j in range(9):
if board[i][j] != ".":
row_nums.append(board[i][j])
if board[j][i] != ".":
col_nums.append(board[j][i])
if len(row_nums) != len(set(row_nums)):
return False
if len(col_nums) != len(set(col_nums)):
return False
for block_row in range(3):
for block_col in range(3):
nine_nums = []
for i in range(3):
for j in range(3):
row = block_row * 3 + i
col = block_col * 3 + j
if board[row][col] != ".":
nine_nums.append(board[row][col])
if len(nine_nums) != len(set(nine_nums)):
return False
return True
這題比較簡單,只是判斷數獨有無效,只要檢查是否有重複項即可